Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Розрахунково - графічна робота
Предмет:
Програмування комп’ютерної графіки
Група:
ЗІ-31

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ Розрахунково-графічна робота з курсу «Програмування комп’ютерної графіки» Львів – 2011 Мета роботи - набути практичних навиків в складанні програм для побудови зображень на екрані комп’ютера за допомогою засобів мови С. Завдання 1 Побудувати графік функції заданої таблично. y=log(x) x [1;20] Текст програми #include<windows.h> #include<stdio.h> #include<GL/gl.h> #include<GL/glu.h> #include<GL/glaux.h> #include<math.h> #include<stdarg.h> void CALLBACK resize(intwidth,intheight) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(-5,5, -5,5, 2,12); gluLookAt( 0,0,5, 0,0,0, 0,1,0 ); glMatrixMode( GL_MODELVIEW ); } voidmath(double x[2],double t) { x[0]=0.5*log(t); x[1]=0.5*t; } void CALLBACK display(void) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); double i, h=0.1; double k=0.4; double x[2]={0,0}; double y[2]={0,0}; glLineWidth(1); glBegin(GL_LINES); glColor3d(0,1,0); glVertex2f(0,-3.5); glVertex2f(0,3.5); glColor3d(0,1,0); glVertex2f(-3.5,0); glVertex2f(3.5,0); for(i=-6;i<7;i++) { glLineWidth(1); glBegin(GL_LINES); glColor3d(0,1,0); glVertex2f(i*k,0.2*k); glVertex2f(i*k,-0.2*k); glColor3d(0,1,0); glVertex2f(-0.2*k,i*k); glVertex2f(0.2*k,i*k); glEnd(); } for(i=1;i<8;i+=h) { math(x,i); glPointSize(2); glBegin(GL_POINTS); glColor3d(1,0,0); glVertex3d(x[0],x[1],0); glEnd(); } glDisable(GL_POINT_SMOOTH); // Відключення режиму згладжування для крапок auxSwapBuffers(); } voidmain() { floatpos[4] = {3,3,3,1}; floatdir[3] = {-1,-1,-1}; GLfloatmat_specular[] = {1,1,1,1}; auxInitPosition( 50, 10, 400, 400); auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE ); auxInitWindow( "GlauxTemplate" ); auxIdleFunc(display); auxReshapeFunc(resize); glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, pos); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialf(GL_FRONT, GL_SHININESS, 128.0); auxMainLoop(display); } Результат роботи програми / Завдання 2 Створити на екрані комп’ютера графічне вікно і сформувати в ньому рухоме зображення: Коло зі спицями діаметром d рухається з лівого верхнього кута прямокутного вікна розмірами 180x160 по прямій лінії під кутом (до нижньої сторони вікна з одночасним обертанням спиць навколо центру кола. Потім коло продовжує рух по прямій лініях під кутом падіння, відбиваючись від інших сторін вікна.Параметри : (=45(,d=24  Текст програми #include<windows.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glaux.h> #include <stdlib.h> #include <time.h> #define racket_w 2 #define racket_deltaracket_w/2 #define initial_vilocity 0.1 #define radius 0.5 double x, y; doubleracket_x=0; doublevx, vy; double right = 5, left = -5, top = 5, bottom = -5; void CALLBACK Key_LEFT(void ) { if(racket_x>left) racket_x -= racket_delta; } void CALLBACK Key_RIGHT(void ) { if(racket_x+racket_w<right) racket_x += racket_delta; } intCatched() { if(x>racket_x&& x<racket_x+racket_w) return 1; else return 0; } voidGetNextXY() { x += vx; y += vy; if(x-radius<left || x+radius>right) { vx = -vx; x += 2*vx; } if(y+radius>top || (y-radius<bottom &&Catched()) ) { vy = -vy; y += 2*vy; } } voidDrawBall() { glPushMatrix(); glTranslated(x,y,0); glColor3d(1,0,0); auxSolidSphere(radius); glPopMatrix(); } void CALLBACK display(void) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); GetNextXY(); DrawBall(); if(y-radius<bottom) auxQuit(); auxSwapBuffers(); } void CALLBACK resize(intwidth,int height) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(-5,5, -5,5, 2,12); gluLookAt( 0,0,5, 0,0,0, 0,1,0 ); glMatrixMode( GL_MODELVIEW ); } vo...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини